package com.of.config;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/*将该类交给Spring容器管理*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    /**
     * 这是一个实现了MyBatis的MetaObjectHandler接口的类。MetaObjectHandler接口定义了在数据库持久化操作期间自动填充实体字段的回调方法。
     * insertFill()方法在插入新实体之前被调用，将"created"和"updated"字段设置为当前日期。updateFill()方法在更新现有实体之前被调用，只更新"updated"字段为当前日期。
     * 通过使用这个MetaObjectHandler，我们可以避免在实体类中手动设置这些字段，并确保在所有数据库操作中保持一致性。
     *
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        Date date = new Date();
        this.setFieldValByName("created", date, metaObject);
        this.setFieldValByName("updated", date, metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updated", new Date(), metaObject);
    }
}
